import { getPage, post, get } from '../../request'

const ns = '/flw/form-instance'

export interface FormInstance {
  formInstanceId: string // 表单实例ID
  formInstanceCode: string // 表单实例编号
  formInstanceName: string // 表单实例名称
  applyUserId: string // 申请人ID
  applyDateTime: string // 申请时间
  startDateTime: string // 流程启动时间
  completedDateTime: string // 流程完成时间
  statue: number // 单据状态(初始0)
  formId: string // 表单ID
  processDefKey: string // 流程Key
  processDefId: string // 流程ID
  processInstanceId: string // 流程实例ID
  currentTask: string // 当前环节
  currentApproveUserId: string // 当前环节审批人ID

  formJson: string // 表单结构数据
  formValue: string // 表单值数据
}

export interface FormInstanceData {
  formInstanceId: string // 表单实例ID
  formJson: string // 表单结构数据
  formValue: string // 表单值数据
}

export const formRunApi = {
  /**
   * 保存表单数据并启动流程
   *
   * @param {*} data 对象
   * @returns
   */
  start(data: any) {
    return post({
      url: `${ns}/start`,
      data
    })
  },

  /**
   * 查询运行表单对象
   * @param {*} id 主键
   * @returns
   */
  findById(id: string) {
    return get({ url: `${ns}/${id}` })
  },

  /**
   * 查询我的申请单分页
   * @param params
   * @returns
   */
  findPage: (page: AxiosType.Pagination, params?: { [key: string]: any }) => {
    return getPage({ url: `${ns}`, params }, page)
  },

  /**
   * 查询我的申请单分页
   * @param params
   * @returns
   */
  findMyApplyPage: (page: AxiosType.Pagination, params?: { [key: string]: any }) => {
    return getPage({ url: `${ns}/my-apply/page`, params }, page)
  },

  /**
   * 查询我的审批单分页
   * @param params
   * @returns
   */
  findMyApprovePage: (page: AxiosType.Pagination, params?: { [key: string]: any }) => {
    return getPage({ url: `${ns}/my-approve/page`, params }, page)
  },

  /**
   * 审批提交表单
   *
   * @param {*} data 对象
   * @returns
   */
  approve(data: any) {
    return post({
      url: `${ns}/approve`,
      data
    })
  }
}
